Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.3.2 Brasília #1496

Merged
merged 1 commit into from
Aug 24, 2023
Merged

v0.3.2 Brasília #1496

merged 1 commit into from
Aug 24, 2023

Conversation

seanyoung
Copy link
Contributor

The language server is much improved, and many fixes all over.

Added

  • Go to definition is now implemented in the language server. chioni16
  • The parser has been updated to be compatible with Ethereum Solidity v0.8.21. seanyoung

Fixed

  • breaking Resolving import paths now matches solc more closely, and only resolves relative paths when specified as ./foo or ../foo. seanyoung
  • Solana The lamports and data fields of tx.accounts can be modified again. LucasSte
  • It is not longer necessary to save a Solidity file, in order for the language server to pick up changes to the file. chioni16
  • The negate operator - now checks for overflow at runtime, and other math overflow fixes. seanyoung

Changed

  • The Substrate target has been renamed to Polkadot. xermicus
  • Polkadot assert() and require() is now implemented as a transction revert, rather than a trap. The error data is returned, and encoded the same as on Ethereum. Error data is now passed to the calling contract, all the way up the call stack. xermicus
  • Polkadot constructor can be non-payable. xermicus


### Added
- Go to definition is now implemented in the language server. [chioni16](https://github.com/chioni16)
- The parser has been updated to be compatible with Ethereum Solidity v0.8.21. [seanyoung](https://github.com/seanyoung)

### Fixed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I fixed the overflowing problem in the tranfer function and avoided overwriting the signer and writer flags. Are these bug fixes worth mentioning?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changelog should really list things which are user-affecting, in a consumable way. This is a security change, so yes this can be mentioned.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added an entry for these two items

Copy link
Contributor

@xermicus xermicus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

CHANGELOG.md Show resolved Hide resolved
CHANGELOG.md Show resolved Hide resolved
CHANGELOG.md Show resolved Hide resolved
Copy link
Contributor

@xermicus xermicus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@seanyoung I forgot that my PRs regarding errors and reverting also fixed some try-catch issues.

CHANGELOG.md Show resolved Hide resolved
@seanyoung
Copy link
Contributor Author

I'd like to have #1497 in the release - it's a feature which has been requested a few times.

@xermicus
Copy link
Contributor

Since we are waiting anyways, can #1501 go in too? It's a 🤏 bugfix and would be good to have in

The language server is much improved, and many fixes all over.

### Added
- Go to definition is now implemented in the language server. [chioni16](https://github.com/chioni16)
- The parser has been updated to be compatible with Ethereum Solidity v0.8.21. [seanyoung](https://github.com/seanyoung)
- **Polkadot** Support for runtimes built with on `polkadot-v1.0.0`

### Fixed
- **breaking** Resolving import paths now matches solc more closely, and only resolves relative
  paths when specified as `./foo` or `../foo`. [seanyoung](https://github.com/seanyoung)
- **Solana** The `lamports` and `data` fields of `tx.accounts` can be modified again. [LucasSte](https://github.com/LucasSte)
- **Solana** The `address.transfer()` and `address.send()` functions no longer change any balances
  in the error case if there was an overflow (e.g. not enough balance).
  [LucasSte](https://github.com/LucasSte)
- **Solana** When collecting the required accounts, ensure that the writer and signer bits are set
  correctly if the same account is used multiple times. [LucasSte](https://github.com/LucasSte)
- It is not longer necessary to save a Solidity file, in order for the language server to pick
  up changes to the file. [chioni16](https://github.com/chioni16)
- The negate operator `-` now checks for overflow at runtime, and other math overflow fixes.
  [seanyoung](https://github.com/seanyoung)
- Fixed a bug where accessing the function selector of virtual functions might cause a compiler panic. [xermicus](https://github.com/xermicus)
- Fixed a bug where the strength reduce optimization pass removed overflow checks on optimized multiplications. [xermicus](https://github.com/xermicus)
- Fixed a bug where external function variables were not marked as `read` when they were called by the semantic analyzer, which could lead to the external function call being eliminated spuriously. [xermicus](https://github.com/xermicus)
- Fixed a bug in `try-catch` where a failed transfer trapped the contract instead of handling it in a catch all block. [xermicus](https://github.com/xermicus)

### Changed
- The Substrate target has been renamed to Polkadot. [xermicus](https://github.com/xermicus)
- **Polkadot** `assert()` and `require()` is now implemented as a transction revert, rather
  than a trap. The error data is returned, and encoded the same as on Ethereum. Error data is now
  passed to the calling contract, all the way up the call stack. [xermicus](https://github.com/xermicus)
- **Polkadot** constructor can be non-payable. [xermicus](https://github.com/xermicus)
- Storage variables are now always written to, regardless whether the contract does read them or not.
  Prior behavior was to not write to storage variables if they are not read, which can remove wanted
  side effects, because unused storage variables may be used in future versions of the contract. [xermicus](https://github.com/xermicus)
- **Solana** seeds can now be of type `address` or `bytesN`, in addition to `bytes`. [seanyoung](https://github.com/seanyoung)

Signed-off-by: Sean Young <[email protected]>
@seanyoung seanyoung merged commit 3514264 into hyperledger-solang:main Aug 24, 2023
17 checks passed
@seanyoung seanyoung deleted the release branch August 24, 2023 09:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants